package com.hsnn.medstgmini.pro.plan.service.impl;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hsnn.medstgmini.pro.plan.dao.PricePlanDao;
import com.hsnn.medstgmini.pro.plan.model.BasePriceadjplan;
import com.hsnn.medstgmini.pro.plan.service.PricePlanManager;
import com.hsnn.medstgmini.util.DateUtil;
import com.hsnn.medstgmini.util.Pagination;

/**
 * @category 调价计划 接口实现类
 * @author 单大伟
 * @date 2015年6月15日
 */
@Service("pricePlanManager")
public class PricePlanManagerImpl implements PricePlanManager {

	@Autowired
	private PricePlanDao pricePlanDao;

	/**
	 * @category 校验计划名称是否相同
	 * @date 2015年7月2日
	 * @param name
	 * @return 存在相同计划名称返回true
	 */
	public boolean checkSamePlanName(BasePriceadjplan plan) {
		return pricePlanDao.checkSamePlanName(plan);
	}

	@Override
	@Transactional
	public void submitPricePlanAdd(BasePriceadjplan bp) {
		pricePlanDao.submitPricePlanAdd(bp);
	}
	
	/**
	 * @category 提交编辑调价计划
	 * @date 2015年7月5日
	 * @param bp
	 */
	public void submitPricePlanEdit(BasePriceadjplan bp) {
		pricePlanDao.submitPricePlanEdit(bp);
	}

	@Override
	public BasePriceadjplan getPricePlanById(String id) {
		return pricePlanDao.getBidHospplanById(id);
	}
	
	/**
	 * 
	 * @category 根据id获取调价计划
	 * @auth wangbing
	 * @return Map
	 * @date 2015年6月23日
	 */
	@Override
	public Map<String,Object> getHospplanById(String id) {
		return pricePlanDao.getHospplanById(id);
	}

	@Override
	@Transactional
	public int batchSubmitDrugTOPlan(List<Map<String,String>> list) {
		return pricePlanDao.batchSubmitDrugTOPlan(list);
	}

	@SuppressWarnings("unchecked")
	@Override
	public Pagination getPriceDurgList(Pagination page) {
		List<Map<String,Object>> list  =  (List<Map<String, Object>>) pricePlanDao.getPriceDurgList(page).getRows();
		for(Map<String,Object> data : list){
			data.put("addDatetime", DateUtil.dateTime((Timestamp)data.get("addDatetime")));
		}
		page.setRows(list);
		return page;
	}

	@Override
	@Transactional
	public int batchSubmitPlanDrugEdit(List<Map<String,String>> list) {
		return pricePlanDao.batchSubmitPlanDrugEdit(list);
	}

	/**
	 * @category 批量删除调价明细
	 * @date 2015年7月3日
	 * @param list
	 */
	@Override
	@Transactional
	public int batchDeleteDrug(List<String> list) {
		return pricePlanDao.batchDeleteDrug(list);
	}

	@Override
	public Pagination getUnChangePlan(Pagination page, BasePriceadjplan plan) {
		return pricePlanDao.getUnChangePlan(page, plan);
	}

	@Override
	@Transactional
	public void runChangePlan(Pagination page) {
		pricePlanDao.runChangePlan(page);
	}

	/**
	 * @category 定时任务 每隔1小时执行一次
	 * @auth 陈镜宇
	 * @date 2015年6月26日
	 */
	@Override
	@Transactional
	public void runChangePlanTask() {
		pricePlanDao.runChangePlan();
	}

}
